<?php
/** ================================
 *  Intellect Board 3
 *  http://intblite.ru
 *  Модуль отправки почты
 *
 *  TODO: возможность отсылки через внешний SMTP-сервер
 *  TODO: отсылка писем с приложениями
 *  ================================ */

class mail extends Module {
  function process_action($action) {
    trigger_error('Класс mail не поддерживает прямых вызовов методов из соображений безопасности!',E_USER_ERROR);
  }

  function process_mail($maildata,$return_path) {
    global $app;
    $parser = new Parser;
    for ($i=0, $count=count($maildata); $i<$count; $i++) {
      if (is_object($maildata[$i]['text'])) $maildata[$i]['text']=$maildata[$i]['text']->code;
      
      // Обрабатываем
      if (isset($maildata[$i]['from_name'])) {
        $maildata[$i]['from']=$this->mime_encode($maildata[$i]['from_name']).' <'.$maildata[$i]['from'].'>';
      }
      if (isset($maildata[$i]['to_name'])) {
        $maildata[$i]['to']=$this->mime_encode($maildata[$i]['to_name']).' <'.$maildata[$i]['to'].'>';
      }

      $headers="From: ".$maildata[$i]['from']."\n";
      $headers .= "Return-Path: $return_path\n";
      if (isset($maildata[$i]['reply'])) $header.="Reply-To: ".$maildata[$i]['reply']."\n";
      $headers.="MIME-Version: 1.0\n";
      if (isset($maildata['html']) && $maildata['html']==false) $headers.="Content-Type: text/plain; charset=utf-8\n";
      else $headers.="Content-Type: text/html; charset=utf-8\n";
      $headers.="Content-Transfer-Encoding: 8bit\n";
      $headers.="X-Priority: 3\n";
      $headers.="X-Mailer: PHP/" . phpversion().' (Intellect Board 3 Framework)';
      $maildata[$i]['subj']=$this->mime_encode($maildata[$i]['subj']);

      if (is_object($maildata[$i]['text'])) { // текст письма может быть как просто текстом, так и HTML-объектом, который надо отпарсить. Второй вариант более желателен.
        $maildata[$i]['text']=$parser->parse('default', $maildata[$i]['text']);
      }

      // если явно указано, что письмо не в HTML-формате
      if (isset($maildata['html']) && $maildata['html']==false) $maildata[$i]['text']=strip_tags($maildata[$i]['text']);
      // собственно, сама отправка
      mail($maildata[$i]['to'], $maildata[$i]['subj'], $maildata[$i]['text'], $headers);
    }
  }

  function mime_encode($text) {
         return "=?utf-8?B?".base64_encode($text)."?=";
  }
}
?>
